package study.junit;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

/**
 * 고의적으로 예외를 발생해야 하는 상황을 테스트 하는 방법.
 * 코드가 예외를 정확히 'catch'해야 하는 경우 반드시 테스트 되길
 * 예상되었거나 정확한 예외를 던지도록 해야 할 때 사용된다.
 * {@link java.lang.Exception}과 같이 최상위의 예외를 잡는 것은 의미가 없으며
 * 비교적 하위에 구현된 정확한 예외를 잡도록 작성해야 한다.
 * @author G.N.Jeong
 */
public class Example2 {

	private List<String> someList;
	
	@Test(expected=NullPointerException.class)
	public void showElement1(){
		someList.get(0);
		// 예외가 발생하여 테스트 성공
	}
	
	@Test(expected=IndexOutOfBoundsException.class)
	public void showElement2(){
		someList = new ArrayList<String>();
		someList.get(0);
		// 예외가 발생하여 테스트 성공
	}
}
